using Domain.Dto;
using Gmmy.DomainExtension;
using Gmmy.Utility;
using Surging.Core.CPlatform.Filters.Implementation;
using Surging.Core.CPlatform.Ioc;
using Surging.Core.CPlatform.Runtime.Server.Implementation.ServiceDiscovery.Attributes;
using System.Threading.Tasks;

namespace Application.Interface
{
	[ServiceBundle("api/{Service}")]
    public interface ISampleModelService : IServiceKey
    {	
	    /// <summary>
        /// 获取案例模型
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        [Authorization(AuthType = AuthorizationType.JWT)]
        Task<CustomApiResult> Get(GetInput input);

        /// <summary>
        /// 获取案例模型列表
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        [Authorization(AuthType = AuthorizationType.JWT)]
        Task<CustomApiResult> GetList(SampleModelListInput input);

        /// <summary>
        /// 创建案例模型
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        [Authorization(AuthType = AuthorizationType.JWT)]
        Task<CustomApiResult> Create(SampleModelCreateInput input);


        /// <summary>
        /// 更新案例模型信息
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        [Authorization(AuthType = AuthorizationType.JWT)]
        Task<CustomApiResult> Update(SampleModelUpdateInput input);
        
        /// <summary>
        /// 删除案例模型信息
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        [Authorization(AuthType = AuthorizationType.JWT)]
        Task<CustomApiResult> LogicDelete(LogicDeleteInput input);
    }
}